package br.com.supermercado.web.bean;

import java.io.Serializable;
import java.util.List;

import org.jboss.seam.ScopeType;
import org.jboss.seam.annotations.Factory;
import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Scope;
import org.jboss.seam.annotations.datamodel.DataModel;
import org.jboss.seam.annotations.datamodel.DataModelSelection;

import br.com.supermercado.dao.CompraDAO;
import br.com.supermercado.dao.ProdutoDAO;
import br.com.supermercado.domain.Compra;
import br.com.supermercado.domain.Produto;

@Name("produtoBean")
@Scope(ScopeType.CONVERSATION)
public class ProdutoBean implements Serializable {

	private static final long serialVersionUID = 7232644549013042725L;

	@DataModel
	private List<Produto> produtoList;

	@DataModelSelection
	private Produto produto;

	@In(create = true)
	private ProdutoDAO produtoDAO;

	@In(create = true)
	private CompraDAO compraDAO;

	public void detalhar(Produto produto) {
		produto.setDetalhar(!produto.isDetalhar());
		produto.setCompras(compraDAO.findUltimasCompras(5, produto));
		List<Compra> comprasBaratasList = compraDAO.findMaisBaratas();
		for (Compra compra : comprasBaratasList) {
			System.out.println(compra.getData() + " " + compra.getPreco() + " " + compra.getProduto().getDescricao());
			
		}

	}

	@Factory(value = "produtoList")
	public void prepareProduto() {
		produtoList = produtoDAO.loadAll();
		produto = new Produto();

	}

	public String prepareCreate() {
		produto = new Produto();
		return "create";

	}

	public String create() {
		produtoDAO.create(produto);
		produto = new Produto();
		produtoList = produtoDAO.loadAll();

		return "ok";
	}

	public String update() {
		produtoDAO.update(produto);
		produto = new Produto();
		produtoList = produtoDAO.loadAll();

		return "ok";
	}

	public String delete() {
		produtoDAO.delete(produto);
		produto = new Produto();
		produtoList = produtoDAO.loadAll();

		return "ok";
	}

	public Produto getProduto() {
		return produto;
	}

	public void setProduto(Produto produto) {
		this.produto = produto;
	}

}
